/**
 * 日期扩展
 */
/* eslint-disable no-extend-native */
import Vue from 'vue'
import dateformat from 'dateformat'

/**
 * 日期格式为字符串
 * @param fmt 符合dateformat的格式化占位符
 * @returns {*}
 */
Date.prototype.format = function (fmt) {
  if (!fmt) {
    return null
  }
  return dateformat(this, fmt)
}
/**
 * 将日期添加指定天数
 * @param days
 * @returns {Date}
 */
Date.prototype.addDays = function (days) {
  if (!isNaN(days) && parseInt(days) !== 0) {
    this.setDate(this.getDate() + parseInt(days))
  }

  return this
}

/**
 * 格式化日期为 'yyyy-mm-dd'
 */
Vue.filter('dateFilter', function (value) {
  if (!value) {
    return ''
  }
  return dateformat(value, 'yyyy-mm-dd')
})
/**
 * 格式化日期为 'yyyy-mm-dd HH:MM:ss'
 */
Vue.filter('datetimeFilter', function (value) {
  if (!value) {
    return ''
  }
  return dateformat(value, 'yyyy-mm-dd HH:MM:ss')
})

Vue.filter("dateFormat", (val, type) => {
  if (!val) return "";
  if (type == "date") {
    return val.substr(0, 10);
  } else if (type == "minute") {
    return val.replace(/t/gi, " ").substr(0, 16);
  } else {
    return val.replace(/t/gi, " ").split(".")[0];
  }
});

Vue.filter("amountFormat", val => {
  if (val >= 1000) {
    return (val / 10000).toFixed(1) + "w";
  }
  return val;
});

// 保留几位小数 默认二位 {{val | toFixed(2) }}
Vue.filter('toFixed', (val, num = 2) => {
  if (!isNaN(val)) val = (+val).toFixed(num)
  return val
})

/**
 * 按数字大小转换为 万 或者 亿 为单位的数字
 */
Vue.filter('numToUnitNum', function (value) {
  if (!value) return '0'
  if (value > 100000000 || value < -100000000) {
    return Number(value/100000000).toFixed(2) + '亿'
  } else if (value > 10000 || value < -10000) {
    return Number(value/10000).toFixed(2) + '万'
  } else {
    return Number(value)
  }
})
